package com.zzyl.service;

import com.zzyl.base.PageResponse;
import com.zzyl.dto.UserLoginRequestDto;
import com.zzyl.dto.VisitDto;
import com.zzyl.entity.Visit;
import com.zzyl.vo.*;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description CustomerUserService
 * @Author luohai
 * @Date 2024-10-20
 */
public interface CustomerUserService {

    /**
     * C端用户登录--微信登录
     * @param  userLoginRequestDto 用户登录信息
     * @return 登录结果
     */
    LoginVo login(UserLoginRequestDto userLoginRequestDto);

    /**
     * 用户端护理项目分页查询
     * @param name
     * @param pageNum
     * @param pageSize
     * @param status
     * @return
     */
    PageResponse<NursingProjectVo> userNursingPaginationQuery(String name, Integer pageNum, Integer pageSize, Integer status);

    /**
     * 小程序端根据id查询护理项目
     * @param id
     * @return
     */
    NursingProjectVo searchUserNursingProjectById(Integer id);

    /**
     * 新增预约
     * @param visit
     * @return
     */
    void addAppointment(Visit visit);

    /**
     * 分页查询预约
     * @param pageNum
     * @param pageSize
     * @param status
     * @return
     */
    PageResponse<VisitVo> pageQueryReservation(Integer pageNum, Integer pageSize, Integer status);

    /**
     * 取消预约
     * @param id
     * @return
     */
    void cancelReservation(Long id);



    /**
     * 查询每个时间段剩余预约次数
     * @param localDateTime
     * @return
     */
    List<TimeCountVo> remainingReservationTimes(LocalDateTime localDateTime);


    /**
     * 查询取消预约数量
     * @return
     */
    Integer queryTheNumberOfCancelledAppointments(Long id);
}
